#include "caculator.h"
#include <cstdio>

/**
 * 测试函数方式为：运行后直接输入中缀表达式即可。
 *测试函数调用了头文件中的change、swith和caculator函数
 *最后输出是用printf，选择保留两位
 *中间我有注释掉的部分，这部分可以用来查看中缀表达式的形式
*/
int main()
{	

	node cur;
	string str;
	p['+'] = p['-'] = 1;//通过hashmap赋值
	p['*'] = p['/'] = 2;
	p['^']=3;
	cout<<"input:";
	
	try{getline(cin,str);
	change(str);
	
	
/**	while (!q.empty())
	{
		cur = q.front();
		if (cur.flag == true) cout << cur.num<<" "; 
		else cout << cur.op<<" ";	
		q.pop();
	}/**/

	string c;
	c = swith(q);
	///cout<<c;
	double ans = calculate(c);
	cout <<"output: ";
        printf("%.2f ", ans);
        cout<<endl;
	
	}catch(UnderflowException &e)
	{
		cout << "错误： 除数为0" <<endl;
	}catch(int )
	{
		cout << "错误： 括号不匹配"<<endl;
	}

	
	
 
	return 0;
}
